package com.theorydance.esoperator.utils;

import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.crypto.digest.DigestUtil;

import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.UUID;

/**
 * 针对ak/sk进行验证的工具
 * @Author grand_ranfs
 * @Date 2023/11/16 10:43
 */
public class SignUtilTest {

    /**
     * 测试
     */
    public static void main(String[] args) {
        // A.客户端：请求（header+param）
        // A.1请求参数
        Map<String, Object> reqParam = new HashMap<String, Object>();
        reqParam.put("param2", "2");
        reqParam.put("param1", "1");
        // A.2请求头(行sign值等信息), AK appId相当于用户名
        String appId = "000000";
        // SK 相当于密码,提供给对方一个随机密码，不直接体现在请求中
        String appSecret = "9ZLEzugQHfQd11vS8pd68lxzA";
        Map<String, Object> reqHeader = SignUtilClient.wrapperHeader(appId, appSecret, reqParam);
        // {appId=000000, sign=B562FFD6FC691A42CD7F46D068B3F74A, nonce=d50e301d-ee2c-446e-8f28-013f0fee09fb, ts=1623388123195}
        System.out.println(reqHeader);

        // ==================客户端发起请求，参数param,并把header带入请求中

        // ============================服务器端，收到请求
        // 1.验证请求信息，2处理业务逻辑，3.返回数据到客户端
        // 1.验证请求信息(方便测试，不再赘述如何获取请求的header和参数信息！直接用上文定义的reqHeader, reqParam)
        Boolean valid = SignUtilServer.checkReqInfo(reqHeader, reqParam);
        if(!valid){
            //无效，不再处理业务信息，返回失败
            System.out.println("无效");
        }
        System.out.println("有效请求，继续处理...");

        //2处理业务逻辑，3.返回数据到客户端...省略
    }
}

